// при написании logger'a опирался на bizzbuzz и на нем же тестировал
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <string.h>
#include <queue>
#include <fstream>
#include <iomanip>
using namespace std;

struct error_info {
	string message;
	string time;
	int pos_of_incorrect;
};
queue<error_info> error_queue; 
ofstream fd;

char* printTime() {
    time_t now;
    char *buf;
     
    time(&now);
    buf = (char*)malloc(strlen(ctime(&now)) + 1);
     
    snprintf(buf,strlen(ctime(&now)),"%s ", ctime(&now));
    
    return buf;
} 

void log_push_info(string er_message, int pos) {
	error_info er_info;
	er_info.message = er_message;
	er_info.time = printTime();
	er_info.pos_of_incorrect = pos;
	error_queue.push(er_info);
    return;
}

void print_message() {
	fd.open("logger.txt", ios::app);
	error_info temp = error_queue.front();
	error_queue.pop();
	fd << temp.time << " error:" << temp.message << "\n";
	//cout << temp.time << " error:" << temp.message << "\n";
	fd.close();
    return;
}

void print_all() {
	while (error_queue.empty() == false) {
        print_message();
    }
}
